// 页面滤镜参数类型
export interface PageFilter {
  /** 色相（0-360） */
  hue: number
  /** 饱和度（0-200） */
  saturate: number
  /** 对比度（0-200） */
  contrast: number
  /** 亮度（0-200） */
  brightness: number
  /** 透明度（0-100） */
  opacity: number
}

// 属性面板 Props 类型
export interface PropertiesPanelProps {
  /** 选中组件ID列表 */
  selectedIds: string[]
  /** 当前选中组件（单选） */
  selectedComponent: ComponentInstance,
  /** 当前选中组*/
  selectedGroup?:ComponentGroup,
  /** 批量编辑-背景色 */
  batchBgColor: string
  /** 批量编辑-宽度 */
  batchWidth: number
  /** 批量编辑-高度 */
  batchHeight: number
  /** 批量更新背景色方法 */
  batchUpdateBgColor: any
  /** 批量更新尺寸方法 */
  batchUpdateSize: any
  /** 应用批量更改方法 */
  applyBatchChanges: any
  /** 重置批量更改方法 */
  resetBatchChanges: any
  /** 组件属性变更回调 */
  handleComponentConfigChange: any
  /** 页面标题 */
  pageTitle: string
  /** 页面尺寸（如 1920x1080） */
  pageSize: string
  /**绑定信息**/
  pageBindings: any[]
  /** 页面背景色 */
  pageBgColor: string
  /** 页面背景图片 */
  pageBgImg: string
  /** 页面适配方式 */
  fitMode: string
  /** 页面滤镜参数 */
  filter: PageFilter
  /** 主题色 */
  themeColor: string
}

// 组件实例配置（画布上的每个组件）
export interface ComponentConfig {
  attributes?: Record<string, any>
  methods?: Record<string, any>
  events?: Record<string, any> 
}

// 组件实例类型（画布上的每个组件）
export interface ComponentInstance {
  /** 组件唯一ID */
  id: string
  /** 组件库ID */
  componentId: string
  /** 组件类型（如 bar/line/pie 等） */
  type: string
  /** X 坐标 */
  x: number
  /** Y 坐标 */
  y: number
  /** 宽度 */
  width: number
  /** 高度 */
  height: number
  /** 标题 */
  title: string
  /** 背景色 */
  bgColor?: string
  /** 旋转角度 */
  rotate?: number
  /** 所属分组ID */
  groupId?: string
  /** 是否已分组 */
  isGrouped?: boolean
  /** 图表类型（如标准/堆叠等） */
  chartType?: string
  /** 是否显示图例 */
  showLegend?: boolean
  /** 数值格式化 */
  valueFormat?: string
  /** 组件属性配置 */
  config: Record<string, any> 
  
  /** 可视性*/
  visible?: boolean
  
  class?:string
  
  /**绑定事件**/
  bindings?:Array<Record<string, any>>
  /** 其它扩展字段 */
  [key: string]: any
}

// 分组类型（组件分组信息）
export interface ComponentGroup {
  /** 分组唯一ID */
  id: string
  /** 分组名称 */
  name: string
  /** 分组内组件ID列表 */
  componentIds: string[]
  /** 分组左上角X坐标 */
  x: number
  /** 分组左上角Y坐标 */
  y: number
  /** 分组宽度 */
  width: number
  /** 分组高度 */
  height: number
  /** 是否锁定 */
  locked?: boolean
  
  /** 可视性*/
  visible?: boolean
  
  /**绑定事件**/
  bindings?:Array<Record<string, any>>
  /** 其它扩展字段 */
  [key: string]: any
  
}

// 历史记录类型（用于撤销/重做）
export interface HistoryItem {
  /** 操作类型 */
  type: 'add' | 'delete' | 'update' | 'group' | 'ungroup' | 'groupMove' | 'reorder'
  /** 操作数据 */
  data: any
  /** 时间戳 */
  timestamp: number
} 

// 多页面数据结构
export interface PageData {
id: string | number
title: string
pageSize: string
pageBgColor: string
pageBgImg: string
fitMode: string
filter: PageFilter
themeColor: string
components: ComponentInstance[]
groups: ComponentGroup[]
history: HistoryItem[]
historyIndex: number,
bindings:any[]
}


// 参数自动映射
export interface ParamFiledMapping {
  /** 参数标识层级-逗号分隔 */
  pidentifier: string
  /** 参数标识 */
  identifier: string
  /** 数据类型 */
  dataType: any
  /** 默认值 */
  defaultValue: any
}